/**
 * Copyright &copy; 2012-2014 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 */
package com.thinkgem.jeesite.modules.reader.service;

import com.thinkgem.jeesite.common.persistence.Page;
import com.thinkgem.jeesite.common.service.CrudService;
import com.thinkgem.jeesite.common.utils.RandomNumUtiles;
import com.thinkgem.jeesite.common.utils.StringUtils;
import com.thinkgem.jeesite.modules.bookset.dao.BkPlaceDao;
import com.thinkgem.jeesite.modules.bookset.entity.BkPlace;
import com.thinkgem.jeesite.modules.reader.dao.ReaderRolerDao;
import com.thinkgem.jeesite.modules.reader.entity.ReaderRoler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 系统管理，安全相关实体的管理类,包括用户、角色、菜单.
 *
 * @author ThinkGem
 * @version 2013-12-05
 */
@Service
@Transactional(readOnly = true)
public class ReaderRolerService extends CrudService<ReaderRolerDao, ReaderRoler>{

    @Autowired
    private ReaderRolerDao readerRolerDao;

    @Autowired
    private BkPlaceDao bkPlaceDao;

    /**
     * 获取用户
     *
     * @param id
     * @return
     */
    public ReaderRoler getUser(String id){
        return readerRolerDao.get(id);
    }

    public Page<ReaderRoler> findUser(Page<ReaderRoler> page, ReaderRoler readerroler){
        // 生成数据权限过滤条件（dsf为dataScopeFilter的简写，在xml中使用 ${sqlMap.dsf}调用权限SQL）
        readerroler.getSqlMap().put("dsf", dataScopeFilter(readerroler.getCurrentUser(), "o", "a"));
        // 设置分页参数
        readerroler.setPage(page);
        // 执行分页查询
        page.setList(readerRolerDao.findList(readerroler));
        return page;
    }

    @Transactional(readOnly = false)
    public void saveRoler(ReaderRoler readerroler){
        if(StringUtils.isBlank(readerroler.getId())){

            //1.生成4位的随机数
            String rdid = RandomNumUtiles.getRandomNum(4);
            //2.如果有的话，在重新生成，直到么有重复的项
            while(!StringUtils.isBlank(readerroler.getId())){
                rdid = RandomNumUtiles.getRandomNum(4);
            }
            readerroler.setRdRoleId(rdid);
            readerroler.preInsert();
            readerRolerDao.insert(readerroler);
            readerRolerDao.insertReaderRolePlace(readerroler);
        }
        else{
            // 更新用户数据
            readerroler.preUpdate();
            readerRolerDao.update(readerroler);
            if(readerroler.getBkPlaceList() != null && readerroler.getBkPlaceList().size() > 0){
                readerRolerDao.deleteReaderRolePlace(readerroler);
                readerRolerDao.insertReaderRolePlace(readerroler);
            }
        }
    }

    @Transactional()
    public void deleteRoler(ReaderRoler readerRoler){
        readerRolerDao.delete(readerRoler);
    }

    public List<BkPlace> getIsBorrowPlace(){
        BkPlace bkPlace = new BkPlace();
        bkPlace.setIsBorrow("1");
        return bkPlaceDao.findList(bkPlace);
    }

    public List<BkPlace> getSetRolePlace(ReaderRoler readerRoler){
        return bkPlaceDao.findReaderRolerPlace(readerRoler);
    }
}
